#include "processbar.h"
#include <stdio.h>
#include <string.h>

#define NUM 101
#define STYLE '='
void processbar(double total,double cur)
{
    //根据传入的数据进行进度条的打印
    //首先计算现在的比率是多少
    int rate = 100*cur/total;
    //循环光标
    char * lable = "|/\\-";
    int len = strlen(lable);
    //先开空间，然后再填充
    char str[NUM];
    //先将所有的内容初始化为0，防止/0问题的出现
    memset(str,0,sizeof(str));
    for(int i = 0;i < rate;i++)
    {
        str[i] = STYLE;
    }

    //旋转光标应该怎么实现
    //|/\-一直循环打印,但是怎么做到循环打印呢，需要一个全局变量来记录次数吗
    static int cnt = 0;
    cnt %= len;

    printf("[%-100s][%%%.1lf][%c]\r",str,cur/total*100,lable[cnt]);
    //由于我们是在单行进行打印，那么下一次调用processbar函数就需要覆盖原来行
    //由于没有换行符，所以我们需要使用fflush函数进行刷新缓存区
    cnt++;
    fflush(stdout);

}
